// 封装axios
import axios from 'axios';

const instance = axios.create({
    baseURL: '/api',
});

// 拦截器 (何时执行, 基本应用)
// interceptors request response
// 添加请求拦截器
instance.interceptors.request.use(
    function (config) {
        // 在发送请求之前做些什么
        // console.log('请求拦截器...');
        // 一般会在这里统一携带 token (登录的凭证)
        let token = localStorage.getItem('x-auth-token');
        if (token) {
            config.headers['x-auth-token'] = token;
        }
        // config.headers.token=123;
        return config;
    },
    function (error) {
        // 对请求错误做些什么
        return Promise.reject(error);
    },
);

// 添加响应拦截器
instance.interceptors.response.use(
    function (response) {
        // console.log('响应拦截器...', response);
        // 统一对返回的数据进行二次处理
        // 统一处理错误信息 (就不需要在每个组件中再判断不为0的情况了)
        // 微信的400 和407 不属于统一的错误, 需要正常返回data数据
        if (response.data.code != 0 && response.data.code != 400 && response.data.code != 407) {
            alert('[拦截器]' + response.data.message);
            return;
        }
        // 对响应数据做点什么
        return response.data;
        // 函数默认返回undefined
        // return; 返回undefined
        // return response;
    },
    function (error) {
        // 对响应错误做点什么
        return Promise.reject(error);
    },
);

export default instance;
